package gwtool.drucken.printable;

import gwtool.container.Geprueft;
import gwtool.container.InlineLehrgang;
import gwtool.container.InlinePruefung;
import gwtool.container.PersonItem;

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.util.Date;

public class PrintablePersonItem extends AbstractPrintableItem implements PrintableItem {

	private PersonItem item;

	public PrintablePersonItem(PersonItem item) {
		this.item = item;
	}

	@Override
	public int getLaenge(Graphics g) {
		int laenge = 12 * 15;
		laenge += item.getNoetigePruefungen().size() * 15;
		laenge += item.getDurchgefuehrtePruefungen().size() * 15;
		laenge += item.getLehrgaenge().size() * 15;
		laenge += ((getStringLaenge("kommentar " + item.getKommentar(), (Graphics2D) g) / 500) + 1) * 15;
		return laenge;
	}

	@Override
	public int drawItem(Graphics g, int zeile) {

		int startZeile = zeile;
		zeile += 15;
		g.drawString("Name: " + item.getBezeichner(), 25, zeile);
		g.drawString("Status: " + item.getStatus(), 280, zeile);
		zeile += 15;
		g.drawString("Geschlecht: " + item.getGeschlecht(), 25, zeile);
		g.drawString("Mitgliedsnummer: " + item.getMitgliedsnummer(), 280, zeile);
		zeile += 15;
		g.drawString("Straße: " + item.getStrasse(), 25, zeile);
		g.drawString("Telefon: " + item.getTelefon(), 280, zeile);
		zeile += 15;
		g.drawString("Ort: " + item.getPlz() + " " + item.getOrt(), 25, zeile);
		g.drawString("Handy: " + item.getMobiltelefon(), 280, zeile);
		zeile += 15;
		g.drawString("Email: " + item.getEmail(), 25, zeile);
		g.drawString("Geburtstag: " + fmt.format(new Date(item.getGeburtstag())), 280, zeile);

		g.drawLine(21, zeile + 5, 574, zeile + 5);
		zeile += 15;
		g.drawString("Lehrgänge/Funktionen: ", 25, zeile);
		zeile += 15;
		for (InlineLehrgang lehrgang : item.getLehrgaenge()) {
			g.drawString(lehrgang.toString(), 25, zeile);
			zeile += 15;
		}
		g.drawLine(21, zeile + 2, 574, zeile + 2);
		zeile += 15;
		g.drawString("Nächste Prüfungen: ", 25, zeile);
		g.drawString("Nächste Prüfung: " + item.getNaestePruefungen().toString(), 280, zeile);
		zeile += 15;
		for (Geprueft geprueft : item.getDurchgefuehrtePruefungen()) {
			g.drawString(geprueft.toString(), 25, zeile);
			zeile += 15;
		}
		g.drawLine(21, zeile + 2, 574, zeile + 2);
		zeile += 15;
		g.drawString("Nötige Prüfungen: ", 25, zeile);
		zeile += 15;
		for (InlinePruefung geprueft : item.getNoetigePruefungen()) {
			g.drawString(geprueft.toString(), 25, zeile);
			zeile += 15;
		}
		g.drawLine(21, zeile + 2, 574, zeile + 2);
		zeile += 15;
		zeile = drawStringBlock((Graphics2D) g, "Kommentar: " + item.getKommentar(), 25, zeile, 580);
		g.drawRoundRect(20, startZeile, 555, zeile - startZeile + 25, 5, 5);

		return zeile;
	}

}
